package gruppenkalenderProjekt;

import gruppenkalenderProjekt.db.BenutzerMapper;
import gruppenkalenderProjekt.db.KalenderMapper;
import gruppenkalenderProjekt.db.KalendereintragMapper;
import gruppenkalenderProjekt.db.KategorieMapper;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;

/**Der Server des Gruppenkalenders
 *
 * @author Rathke,Thies
 * @coauthor Gruppe 2
 */
// <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
// #[regen=yes,id=DCE.C7437634-9CB0-5376-35B7-A40DE0581EE2]
// </editor-fold> 
public class gruppenkalenderServer {

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.916C434C-09AB-21A8-11B2-D40E0EBDA0C9]
    // </editor-fold> 
    private Verwaltung verwaltung;

    public gruppenkalenderServer() {
        try {

            /*
            TO DO: Projekt Einstellungen ändern, dort muss noch SimplyPolicy.txt eingefügt werde
             * und noch weitere Dinge eingestellt werden. Nachschauen im BankProjekt


            */

            //Neues Verwaltungsobjekt wird angelegt,Im Konstruktor wird als Parameter sofort die statische Methode aufgerufen
            verwaltung = new VerwaltungImpl(KalenderMapper.kalenderMapper(), KalendereintragMapper.kalendereintragMapper(),
                    KategorieMapper.kategorieMapper(), BenutzerMapper.benutzerMapper());

            // Wir melden das Verwaltungsobjekt bei einer RMI-Registry an.
            // Zuerst erstellen wir eine Registry, die auf dem Port 1099 wartet (standart Port für RMI)
            LocateRegistry.createRegistry(1099);
            //Das soeben erstelle Objekt wird dort hinterlegt
            //Die URL benutzt das rmi:// Protokoll, IP:localhost  Port:1099 Ort:Verwaltung
            Naming.rebind("rmi://127.0.0.1:1099/Verwaltung", verwaltung);

            System.out.println("Verwaltungsklasse in Registry eingetragen...");

        } catch (RemoteException e) {
            e.printStackTrace();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }

    /**main Diese Methode wird beim ausfuehren der Klasse aufgerufen und ruft den Konstruktor auf
     * 
     * @param args
     */
    public static void main(String args[]) {
        gruppenkalenderServer server = new gruppenkalenderServer();
        System.out.println("Gruppenkalender Server von Gruppe2 gestartet....");
    }
}

